package demo.GUIDemo;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class GUIListenerDemo {
    public static void main( String[] args ) {
        JFrame frame = new JFrame("登录界面");
        frame.setSize(400, 300);      // 窗口大小
        frame.setLocation(200, 200);      // 窗口位置
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // 窗口关闭时退出程序
        frame.setVisible(true);   // 显示窗口

        JPanel panel = new JPanel();    // 创建面板（容器）
        frame.add(panel);  // 添加面板到窗口

        JButton button = new JButton("登录");    // 创建按钮
        button.setBounds(100, 100, 80, 20);   // 按钮位置和宽高
        panel.add(button);    // 添加按钮

        // 给按钮绑定事件监听器
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed( ActionEvent e ) {  // e是事件对象，封装了事件信息
                // 点击按钮。底层触发这个匿名函数执行。
                JOptionPane.showMessageDialog(frame, "点击了登录按钮");
            }
        });

        // 监听用户键盘上下左右四个按键的事件
        // 给frame窗口整体添加键盘事件监听器
        frame.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed( KeyEvent e ) {
                // 获取按键的键值
                int keyCode = e.getKeyCode();
                switch ( keyCode ) {
                    case KeyEvent.VK_UP:
                        System.out.println("向上");
                        break;
                    case KeyEvent.VK_DOWN:
                        System.out.println("向下");
                        break;
                    case KeyEvent.VK_LEFT:
                        System.out.println("向左");
                        break;
                    case KeyEvent.VK_RIGHT:
                        System.out.println("向右");
                        break;
                }
            }
        });

        // 窗口成为焦点
        frame.setFocusable(true);
    }
}
